package com.charging.business.media;

import com.alibaba.fastjson2.annotation.JSONField;
import com.charging.business.utils.DateEx;
import com.charging.common.utils.DateUtils;

/**
 * CPC卡过站信息文件(DF/EF02)的解码信息
 * @author lzj
 */
public class CpcEf02Model {
    /**
     * 通行省份个数(01-01,1,n)
     * 入口车道置1，经过省界入口ETC门架时累加
     */
    @JSONField(ordinal = 1)
    public int provCount = 0;

    /**
     * 本省门架个数(02-02,1,n)
     * 即当前通行省份内所有途径ETC门架个数
     */
    @JSONField(ordinal = 2)
    public int gantryCount = 0;

    /**
     * 本省累计金额(03-05,3,n)
     * 当前通行省份内所有途径ETC门架（ 含拟合门架）的累计计费金额
     * MTC - 为实收金额,不进行元整处理
     */
    @JSONField(ordinal = 3)
    public int provSumPayFee = 0;

    /**
     * 本省计费里程(06-08,3,n)
     * 当前通行省份内所有途径ETC门架（ 含拟合） 对应的累计计费里程， 单位米
     */
    @JSONField(ordinal = 4)
    public int sumMileage = 0;

    /**
     * 本省入口ETC门架信息(09-11,3,bn)
     * 省界入口ETC门架或省内第一个ETC门架的信息
     * 3字节ETC门架编码 ，入口收费站3字节ETC门架编码填入0x00
     */
    @JSONField(ordinal = 5)
    public String provEntryHex = "000000";

    /**
     * 本省入口时间(12-15,4,n)
     * UNIX时间
     */
    @JSONField(ordinal = 6)
    public long enTime = DateUtils.getNowDate().getTime() / 1000;

    /**
     * 最新过门架编码(16-18,3,bn)
     */
    @JSONField(ordinal = 7)
    public String newGantryNo = "000000";

    /**
     * 最新过门架时间(19-22,4,n)
     * UNIX时间
     */
    @JSONField(ordinal = 8)
    public long newGantryTime = DateUtils.getNowDate().getTime() / 1000;

    /**
     * 最新过门架计费金额(23-25,3,n)
     */
    @JSONField(ordinal = 9)
    public int newGantryAmount = 0;

    /**
     * 最新过门架计费里程(26-28,3,n)
     */
    @JSONField(ordinal = 10)
    public int newGantryMileage = 0;

    /**
     * 过站信息中写入的门架数量(29-29,1,n)
     */
    @JSONField(ordinal = 11)
    public int gantryNum = 0;

    /**
     * 过站门架HEXS(30-101,72,bn)
     * 3字节门架编号,共计可记录24个门架
     */
    @JSONField(ordinal = 12)
    public String[] gantryHexs = new String[24];

    /**
     * CPC卡CPC卡过站信息文件(DF/EF02)的解码信息
     */
    public CpcEf02Model() {
        for (int a = 0; a < gantryHexs.length; a++) {
            gantryHexs[a] = "";
        }
    }

    /**
     * 比较分省计费信息
     *
     * @param prov
     * @return
     */
    public boolean sameWith(CpcProvModel prov) {
        //			provSumPayFee == prov.provSumPayFee &&
        //			provEntryHex.equals(prov.provEntryHex) && // 广东省EF02中为HEX, EF04为"000000";山东EF02为"000000", EF04为HEX
        return gantryCount == prov.gantryCount && sumMileage == prov.sumMileage && enTime == prov.enTime && newGantryNo.equals(prov.newGantryNo) && newGantryTime == prov.newGantryTime;
    }

    /**
     * 返回过前序门架时间
     * 格式："yyyy-MM-dd'T'HH:mm:ss"
     */
    public String lastGantryTime(String pattern) {
        return DateEx.ut2str((int) newGantryTime, pattern);
    }

    /**
     * 返回本省入口时间
     * 格式："yyyy-MM-dd'T'HH:mm:ss"
     */
    public String provEnTimeT() {
        return DateEx.ut2str((int) enTime, "yyyy-MM-dd'T'HH:mm:ss");
    }

    /**
     * 返回CPC卡中过门架编号
     */
    public String gantryPass() {
        return String.join("", gantryHexs);
    }
}
